package com.zte.shopping.util;

import com.zte.shopping.entity.ProductType;
import org.apache.poi.hssf.usermodel.*;

import javax.servlet.ServletOutputStream;
import java.util.List;

/**
 * @Classname ExcelImpl
 * @Description TODO
 * @Date 2020/6/28
 * @Created by 雨辰
 */
public class ExcelImpl {

    public void export(String[] titles, ServletOutputStream out, List<ProductType> productTypeList) throws Exception{
        try{
            // 第一步，创建一个workbook，对应一个Excel文件
            HSSFWorkbook workbook = new HSSFWorkbook();

            // 第二步，在webbook中添加一个sheet,对应Excel文件中的sheet
            HSSFSheet hssfSheet = workbook.createSheet("sheet1");

            // 第三步，在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short

            HSSFRow row = hssfSheet.createRow(0);
            // 第四步，创建单元格，并设置值表头 设置表头居中
            HSSFCellStyle hssfCellStyle = workbook.createCellStyle();

            //居中样式
            hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

            HSSFCell hssfCell = null;
            for (int i = 0; i < titles.length; i++) {
                hssfCell = row.createCell(i);//列索引从0开始
                hssfCell.setCellValue(titles[i]);//列名1
                hssfCell.setCellStyle(hssfCellStyle);//列居中显示
            }

            // 4.遍历学生信息列表 塞入到对应的单元格中
            if (productTypeList != null && productTypeList.size() != 0)
            {
                for (int i = 0; i < productTypeList.size(); i++)
                {
                    ProductType productType = productTypeList.get(i);

                    HSSFRow rowContent = hssfSheet.createRow(i + 1);

                    // 第1列: 序号
//                    HSSFCell cellContent0 = rowContent.createCell(0);
//                    cellContent0.setCellValue(i + 1 + "");

                    // 第1列: id
                    HSSFCell cellContent1 = rowContent.createCell(0);
                    cellContent1.setCellValue(productType.getId());

                    // 第2列: 名称
                    HSSFCell cellContent2 = rowContent.createCell(1);
                    cellContent2.setCellValue(productType.getName());

                    // 第3列: 状态
                    HSSFCell cellContent3 = rowContent.createCell(2);
                    cellContent3.setCellValue(productType.getStatus());

                }
            }
            // 第七步，将文件输出到客户端浏览器
            try {
                workbook.write(out);
                out.flush();
                out.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("导出信息失败！");

        }
    }
}
